package com.basic.common.utils;

import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Data
public class ParamsModel<T>{

    /**
     * 应用标识
     */
    private String appId;

    /**
     * 分页参数
     */
    private PageParams page;

    /**
     * 排序参数
     */
        private SortParams sort;

    /**
     * 查询参数
     */
    private Map<String, Integer> project;

    /**
     * 业务条件
     */
    private T condition;

    public String[] getSearchFields() {
        List<String> fields = new ArrayList<>();
        if (ObjectUtil.isNotEmpty(project)) {
            for (String key : project.keySet()) {
                Integer value = project.get(key);
                if (value == 1) {
                    fields.add(StrUtil.toSymbolCase(key, '_'));
                }
            }
        }
        return ArrayUtil.toArray(fields, String.class);
    }

    @Data
    public static class PageParams {

        /**
         * 页码
         */
        private Long index;

        /**
         * 页码大小
         */
        private Long size;

        /**
         * 开始下标
         */
        private Long startPos;

    }

    @Data
    public static class SortParams {

        /**
         * 排序字段
         */
        private String sidx;

        /**
         * 排序顺序
         */
        private String order;

    }
}
